package io;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.charset.StandardCharsets;

/**
 * 缓冲输出流的写缓冲问题
 */
public class BosFlushDemo {
    public static void main(String[] args) throws IOException {
        FileOutputStream fos = new FileOutputStream("bos.txt");
        BufferedOutputStream bos = new BufferedOutputStream(fos);
        String line = "super idol的笑容都没你的天~";
        byte[] data = line.getBytes(StandardCharsets.UTF_8);
        bos.write(data);

        /*
            void flush()
            强制将缓冲流的缓冲取(内部维护的字节数组)中已经缓存的字节一次性写出


            flush方法是被定义在flushable接口中的，OutputStream这个超类实现了
            该接口。意味着所有字节输出流都具有这个方法。
            除了缓冲流之外，其他的高级流的flush方法只有一个作用:就是调用它链接的
            流的flush方法，将flush动作传递下去。最终传递给缓冲流用于清空缓冲区
         */
//        bos.flush();
        System.out.println("写出完毕!");
        bos.close();//缓冲输出流的close()方法内部会自动调用一次flush()方法确保数据写出
    }
}
